package com.ftg.mall.controller;

import com.alibaba.fastjson2.JSON;
import com.ftg.mall.base.entity.pms.Brand;
import com.ftg.mall.base.util.RedisUtil;
import com.ftg.mall.service.IBrandService;
import com.ftg.mall.service.impl.BrandServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.Objects;

/**
 * @author kangjx
 * @createTime 2022/12/26
 */
@RestController
public class RedisController {

    @Autowired
    RedisUtil redisUtil;


    @Autowired
    IBrandService iBrandService;

    /**
     * 如果说我们操作是同一个方法，那么我们希望 不查询mysql
     *  -- mysql低
     *
     *  -- redis 速度
     *  -- mybatis 一级二缓缓存 redis代替
     * @return
     */
    @GetMapping("/show")
    public String getShow(@RequestParam("name") String name){
        //先 redis 有 直接返回
        String val = redisUtil.stringGet("getShow_"+name);
        if(Objects.isNull(val)){
            List<Brand> list = iBrandService.findOneByName(name);
//            把数据 写入到redis  数据是有效性的
            String vals = JSON.toJSONString(list);
            //为了保证绝大数时间 ，我们的内存数据存在，变化的
//            1000 3000000
            redisUtil.stringSet("getShow_"+name,vals,3000);
            val = redisUtil.stringGet("getShow_"+name);
        }
        return val;
    }

}
